//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
//     Copyright (c) Telligent Systems Corporation.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using CommunityServer.Components;
using CommunityServer.Galleries.Components;

namespace CommunityServer.Galleries.Controls
{
    /// <summary>
    /// Summary description for WeblogTemplatedForumWebControl.
    /// </summary>
    public abstract class GalleryTemplatedWebControl : GalleryBaseTemplatedWebControl
    {
        public GalleryTemplatedWebControl():base()
        {
			
        }

        /// <summary>
        /// By default, checks to see if a blog exists and if the user has read access
        /// </summary>
        /// <param name="g"></param>
        protected virtual void Authorize(Gallery g)
        {
            if(g == null)
                throw new CSException(CSExceptionType.SectionNotFound, string.Format("Gallery {0} could not be found", CSContext.Current.ApplicationKey));


            if(Context.Items[CurrentUser.Username + "Permission:" + Permission.View.ToString()] == null)
            {
                Permissions.AccessCheck(g,Permission.View,this.CurrentUser);
                Context.Items[CurrentUser.Username + "Permission:" + Permission.View.ToString()] = true;

            }
        }

        protected bool IsPublicGallery
        {
            get{ return Permissions.ValidatePermissions(CurrentGallery,Permission.View,Users.GetAnonymousUser(true));}
        }


        private Gallery gallery = null;

        /// <summary>
        /// Returns the CurrentWeb and calls Authorize
        /// </summary>
        public virtual Gallery CurrentGallery
        {
            get
            {
                if(gallery == null)
                {
                    string appKey = CSContext.Current.ApplicationKey;
                    if(Globals.IsNullorEmpty(appKey))
                        appKey = GalleryConfiguration.Instance().DefautApplicationKey;

                    gallery = Galleries.GetGallery(appKey);

                    if(!CurrentUser.IsGalleryAdministrator)
                    {
                        Authorize(gallery);
                    }

                }

                return gallery;
            }
        }

        


    }
}
